# Preface

The DBI is the standard database interface for the Perl programming language. The DBI is database-independent, which means that it can work with just about any database, such as Oracle, Sybase, Informix, Access, MySQL, etc.

While we assume that readers of this book have some experience with Perl, we don't assume much familiarity with databases themselves. The book starts out slowly, describing different types of databases and introducing the reader to common terminology.

This book is not solely about the DBI -- it also concerns the more general subject of storing data in and retrieving data from databases of various forms. As such, this book is split into two related, but standalone, parts. The first part covers techniques for storing and retrieving data without the DBI, and the second, much larger part, covers the use of the DBI and related technologies.

Throughout the book, we assume that you have a basic grounding in programming with Perl and can put together simple scripts without instruction. If you don't have this level of Perl awareness, we suggest that you read some of the Perl books listed in Section 0.1, "Resources ".

Once you're ready to read this book, there are some shortcuts that you can take depending on what you're most interested in reading about. If you are interested solely in the DBI, you can skip Chapter 2, "Basic Non-DBI Databases " without too much of a problem. On the other hand, if you're a wizard with SQL, then you should probably skip Chapter 3, "SQL and Relational Databases " to avoid the pain of us glossing over many fine details. Chapter 7, "ODBC and the DBI " is a comparison between the DBI and ODBC and is mainly of interest to database geeks, design aficionados, and those people who have `Win32::ODBC` applications and are desperately trying to port them to DBI.

Here's a rundown of the book, chapter by chapter:

Chapter 1, "Introduction "

  This introduction sets up the general feel for the book.

Chapter 2, "Basic Non-DBI Databases "

  This chapter covers the basics of storing and retrieving data either with core Perl functions through the use of delimited or fixed-width flat-file databases, or via non-DBI modules such as `AnyDBM_File`, `Storable`, `Data::Dumper` and friends. Although the DBI isn't used in this chapter, the way the `Storable` and `Data::Dumper` modules are used to pack Perl data structures into strings can easily be applied to the DBI.

Chapter 3, "SQL and Relational Databases "

  This chapter is a basic overview of SQL and relational databases and how you can write simple but powerful SQL statements to query and manipulate your database. If you already know some SQL, you can skip this chapter. If you don't know SQL, we advise you to read this chapter since the later chapters assume you have a basic knowledge of SQL and relational databases.

Chapter 4, "Programming with the DBI "

  This chapter introduces the DBI to you by discussing the architecture of the DBI and basic DBI operations such as connecting to databases and handling errors. This chapter is essential reading and describes the framework that the DBI provides to let you write simple, powerful, and robust programs.

Chapter 5, "Interacting with the Database "

  This chapter is the meat of the DBI topic and discusses manipulating the data within your database -- that is, retrieving data already stored in your database, inserting new data, and deleting and updating existing data. We discuss the various ways in which you can perform these operations from the simple "get it working" stage to more advanced and optimized techniques for manipulating data.

Chapter 6, "Advanced DBI "

  This chapter covers more advanced topics within the sphere of the DBI such as specifying attributes to fine-tune the operation of DBI within your applications, working with LONG/LOB datatypes, statement and database metadata, and finally transaction handling.

Chapter 7, "ODBC and the DBI "

  This chapter discusses the differences in design between DBI and ODBC, the other portable database API. And, of course, this chapter highlights why DBI is easier to program with.

Chapter 8, "DBI Shell and Database Proxying "

  This chapter covers two topics that aren't exactly part of the core DBI, per se, but are extremely useful to know about. First, we discuss the DBI shell, a command-line tool that allows you to connect to databases and issue arbitrary queries. Second, we discuss the proxy architecture that the DBI can use, which, among other things, allows you to connect scripts on one machine to databases on another machine without needing to install any database networking software. For example, you can connect a script running on a Unix box to a Microsoft Access database running on a Microsoft Windows box.

Appendix A, "DBI Specification "

  This appendix contains the DBI specification, which is distributed with `DBI.pm`.

Appendix B, "Driver and Database Characteristics "

  This appendix contains useful extra information on each of the commonly used DBDs and their corresponding databases.

Appendix C, "ASLaN Sacred Site Charter"

  This appendix contains the charter for the Ancient Sacred Landscape Network, which focuses on preserving sites such as the megalithic sites used for examples in this book.

## 0.1. Resources

To help you navigate some of the topics in this book, here are some resources that you might want to check out before, during, and after reading this book:

http://www.symbolstone.org/technology/perl/DBI

  The DBI home page. This site contains lots of useful information about DBI and where to get the various modules from. It also has links to the very active dbi-users mailing list and archives.

http://www.perl.com/CPAN

  This site includes the Comprehensive Perl Archive Network multiplexer, upon which you find a whole host of useful modules including the DBI.

An Introduction to Database Systems, by C. J. Date

  This book is the standard textbook on database systems and is highly recommended reading.

A Guide to the SQL Standard, by C. J. Date and Hugh Darwen

  An excellent book that's detailed but small and very readable.

http://w3.one.net/~jhoffman/sqltut.htm
http://www.jcc.com/SQLPages/jccs_sql.htm
http://www.contrib.andrew.cmu.edu/~shadow/sql.html

  These web sites contain information, specifications, and links on the SQL query language, of which we present a primer in Chapter 3, "SQL and Relational Databases ". Further information can be found by entering "SQL tutorial" or similar expressions into your favorite web search engine.

Learning Perl, by Randal Schwartz and Tom Christiansen

  A hands-on tutorial designed to get you writing useful Perl scripts as quickly as possible. Exercises (with complete solutions) accompany each chapter. A lengthy new chapter introduces you to CGI programming, while touching also on the use of library modules, references, and Perl's object-oriented constructs.

Programming Perl, by Larry Wall, Tom Christiansen, and Randal Schwartz

  The authoritative guide to Perl version 5, the scripting utility that has established itself as the programming tool of choice for the World Wide Web, Unix system administration, and a vast range of other applications. Version 5 of Perl includes object-oriented programming facilities. The book is coauthored by Larry Wall, the creator of Perl.

The Perl Cookbook, by Tom Christiansen and Nathan Torkington

  A comprehensive collection of problems, solutions, and practical examples for anyone programming in Perl. Topics range from beginner questions to techniques that even the most experienced of Perl programmers will learn from. More than just a collection of tips and tricks, The Perl Cookbook is the long-awaited companion volume to Programming Perl, filled with previously unpublished Perl arcana.

Writing Apache Modules with Perl and C, by Lincoln Stein and Doug MacEachern

  This book teaches you how to extend the capabilities of your Apache web server regardless of whether you use Perl or C as your programming language. The book explains the design of Apache, mod_perl, and the Apache API. From a DBI perspective, it discusses the `Apache::DBI` module, which provides advanced DBI functionality in relation to web services such as persistent connection pooling optimized for serving databases over the Web.

Boutell FAQ (http://www.boutell.com/faq/) and others

  These links are invaluable to you if you want to deploy DBI-driven web sites. They explain the dos and don'ts of CGI programming in general.

MySQL & mSQL, by Randy Jay Yarger, George Reese, and Tim King

  For users of the MySQL and mSQL databases, this is a very useful book. It covers not only the databases themselves but also the DBI drivers and other useful topics like CGI programming.

Copyright © 2001 O'Reilly & Associates. All rights reserved.